<?php
/**
 * @category 	Javascript.php
 * @author 		Sung Hoon, Cho (akdddnet@gmail.com)
 * @since		2008. 11. 11.
 * @license		BSD License
 * @version		0.2
 * 
 * 개념적으로는 SHE 작업하면서 사용했던 JsHelper와 비슷한 역활을 합니다.
 * 사이트 전체적으로 자주 사용되는 함수들만 생성해서 사용합니다~
 * 
 * 수정사항 
 * 	- 2011-03-03
 * 		1. 기존에 사용하던 함수들 모두 삭제함.
 * 		2. jquery-mobile같은 모바일 javascript framework 사용할때는 이 클래스를 사용하면 안됩니다. 
 *  
 */

class Javascript {
	
	/**
	 * javascript tag 시작 또는 종료 구문을 리턴해줍니다.
	 * @param unknown_type $is_end
	 */
	private static function getScriptTag($is_end=false) {
		if($is_end)
			return "</script>";
		else return "<script>";
	} 
	
	/**
	 * redirect
	 * @param string $where
	 */
	public static function redirect($where) {
		self::getEndScript('<meta http-equiv="refresh" content="0; URL='.$where.'">');
	}
	
	
	/**
	 * 
	 * 경고 문구 출력 후 특정 페이지로 이동시킵니다.
	 * @param string $alert
	 * @param string $href
	 * @param boolean $replace
	 */
	public static function getAlertMove($alert, $href, $replace=false) {
		$script  = self::getScriptTag();
		$script .= 'alert("'.$alert.'");';
		
		if($replace) 	$script .= 'location.replace("'.$href.'")';
		else 			$script .= 'location.href = "'.$href.'"';
		$script	.= self::getScriptTag(true);
		
		self::getEndScript($script);
	}
	
	
	/**
	 * 
	 * 경고 문구를 출력후 이전 페이지로 돌아갑니다.
	 * @param string $alert
	 */
	public static function getAlert($alert) {
		$script  = self::getScriptTag();
		$script .= 'alert("'.$alert.'");';
		$script .= 'history.back(-1);';
		$script .= self::getScriptTag(true);
		
		self::getEndScript($script);
	}
	
	
	public static function getAlertWithAjax($alert, $is_error = true) {
		if(Common::isAjax()) {
			$code = ($is_error) ? Javascript::getFailureCode() : Javascript::getSuccessCode();
			
			Javascript::printJSON(array("code"=>$code, "msg"=>$alert));
		} else {
			Javascript::getAlert($alert);
		}
	}
	
	
	public static function move($where, $is_replace=false) {
		$script  = self::getScriptTag();
		if($is_replace)
			$script .= 'location.href="'.$where.'";';
		else $script .= 'location.replace("'.$where.'");';
		$script .= self::getScriptTag(true);
		
		self::getEndScript($script);
	}
	
	
	/**
	 * jQuery validate 스크립트 파일을 리턴합니다.
	 * 
	 * @return array
	 */
	public static function getjQueryValidateFile() {
		return array("jquery.validate.min.js", "jquery.validate.ko.js");
	}
	
	/**
	 * 
	 * 스크립트를 출력 후 모든 활동을 중지 시킵니다.
	 * @param string $script
	 */
	private static function getEndScript($script) {
		echo preg_replace('/(\r\n|\r|\n)/', '\n', $script);;
		exit;
	}

	
	
	static function printJSON(array $array) {
		header("Content-Type: application/json");
		
		echo json_encode($array);
		exit;
	}
	
	
	static function getSuccessCode() {
		return "100";
	}
	
	static function getFailureCode() {
		return "300";
	}
}